package com.imooc.project.service.impl;

import cn.hutool.crypto.digest.MD5;
import com.imooc.project.dto.LoginDto;
import com.imooc.project.entity.Account;
import com.imooc.project.dao.AccountMapper;
import com.imooc.project.service.AccountService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

/**
 * <p>
 * 账号表 服务实现类
 * </p>
 *
 * @author HMF
 * @since 2021-09-10
 */
@Service
public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> implements AccountService {


    @Override
    public LoginDto login(String username, String password) {
        LoginDto loginDto = new LoginDto();
        loginDto.setPath("redirect:/");  // 设置默认的路径为失败
        /// 根据 用户名 查找数据库，看有没有记录
        Account account = lambdaQuery().eq(Account::getUsername, username).one();
        if (account == null) {
            loginDto.setError("用户名不存在！");
            return loginDto;
        }

        MD5 md5 = new MD5(account.getSalt().getBytes()); // 加盐加密
        String digestHex = md5.digestHex(password); // 加密码后与数据库对比
        if (!digestHex.equals(account.getPassword())) {
            loginDto.setError("密码错误！");
            return loginDto;
        }

        loginDto.setAccount(account); /// 保存登录信息
        loginDto.setPath("login/main"); /// 登录成功跳转到后台主页
        return loginDto; // 登录成功之后，还要把登录信息存在session中
    }
}
